package com.abner.seven.principle.segregation;

/**
 * 设计模式七大原则:
 * 		接口隔离原则: 客户端不应该依赖它不需要的接口，即一个类对另一个类的依赖应该建立在最小的接口上
 * @author abner
 */
public class Segregation1 {

	public static void main(String[] args) {

	}

}

/**
 * 违背了接口隔离原则
 */

interface Interface1 {
	/**
	 * 方法一
	 */
	void operation1();
	/**
	 * 方法二
	 */
	void operation2();
	/**
	 * 方法三
	 */
	void operation3();
	/**
	 * 方法四
	 */
	void operation4();
	/**
	 * 方法五
	 */
	void operation5();
}

class B implements Interface1 {
	@Override
	public void operation1() {
		System.out.println("B 实现了 operation1");
	}
	@Override
	public void operation2() {
		System.out.println("B 实现了 operation2");
	}
	@Override
	public void operation3() {
		System.out.println("B 实现了 operation3");
	}
	@Override
	public void operation4() {
		System.out.println("B 实现了 operation4");
	}
	@Override
	public void operation5() {
		System.out.println("B 实现了 operation5");
	}
}

class D implements Interface1 {
	@Override
	public void operation1() {
		System.out.println("D 实现了 operation1");
	}
	@Override
	public void operation2() {
		System.out.println("D 实现了 operation2");
	}
	@Override
	public void operation3() {
		System.out.println("D 实现了 operation3");
	}
	@Override
	public void operation4() {
		System.out.println("D 实现了 operation4");
	}
	@Override
	public void operation5() {
		System.out.println("D 实现了 operation5");
	}
}

class ccA {
	public void depend1(Interface1 i) {
		i.operation1();
	}
	public void depend2(Interface1 i) {
		i.operation2();
	}
	public void depend3(Interface1 i) {
		i.operation3();
	}
}
  
class C {
	public void depend1(Interface1 i) {
		i.operation1();
	}
	public void depend4(Interface1 i) {
		i.operation4();
	}
	public void depend5(Interface1 i) {
		i.operation5();
	}
}